package jp.shuitic.hatebwebhook.twitter.web.server;

import jp.shuitic.hatebwebhook.twitter.web.client.HatebWebHookTwitUser;

/**
 * ユーザ情報オブジェクトを操作するインタフェース
 * @author shuitic
 */
public interface HatebWebHookTwitUserService {
	/**
	 * AppEngineのユーザオブジェクトを指定して検索する
	 * @param user
	 * @return
	 */
	public HatebWebHookTwitUser findByCurrentUser();
	/**
	 * はてぶユーザ名を指定して検索する
	 * @param hatebUserName
	 * @return
	 */
	public HatebWebHookTwitUser findByHatebUserName(String hatebUserName);
	
	/**
	 * 保存する
	 * @param hatebWebHookTwitUser
	 */
	public void save(HatebWebHookTwitUser hatebWebHookTwitUser) throws Exception;

	/**
	 * パラメータを検証してオブジェクトを返す
	 * @param hatebUserName はてぶユーザ命
	 * @param hatebWebHookKey　WebHookKey
	 * @param twitterUser　twitterユーザ名
	 * @param twitterPassword twitterパスワード
	 * @return
	 * @throws Exception
	 */
	public HatebWebHookTwitUser validate(String hatebUserName, String hatebWebHookKey, String twitterUser, String twitterPassword) throws Exception;

	/**
	 * データを削除する
	 * @param user
	 */
	public boolean removeCurrentUser();
		
}
